/**
 * ECharts 图表库按需引入配置
 * 避免在首屏加载时引入大型图表库
 */

// 动态导入 ECharts
export async function useEcharts() {
  const echarts = await import('echarts')
  return echarts
}

/**
 * 创建图表实例
 * @param el DOM元素
 * @param theme 主题
 */
export async function createChart(el: HTMLElement, theme?: string) {
  const echarts = await useEcharts()
  const chart = (echarts as any).init(el, theme)
  return chart
}

/**
 * 图表自适应（防抖）
 * @param chart 图表实例
 */
export function resizeChart(chart: any) {
  let timer: number | null = null

  return function () {
    if (timer) {
      clearTimeout(timer)
    }
    timer = window.setTimeout(() => {
      chart?.resize()
    }, 300)
  }
}
